Flask ile routes ve if/for

Flask bildiğiniz gibi pyton web mikroframwork'udür. Bir web sunucusu değildir. Kendi içerisinde sadece geliştirme sürecinde kullanacağınız basit bir web sunucusu bulunmaktadır fakat asıl işi bu değildir. Bugün basit kodlar çalışırarak route ile pathler oluşturacağız devamında ise koşul ve döngüleri nasıl kullanacağımızı göreceğiz.


Öncelikle kurulum aşamasından başlayalım. Python ve flask kurulu olması gerekiyor. Ayrıca editör olarak ben VScode kullancağım. Linux OS den krulum kodlarını paylaşacağım.

sudo yum update -y >> paket yöneticimizi güncelledik

sudo yum install python >> python'u kurduk

sudo pip3 install flask >> flask'ı kurduk

python3 --version >> python kurulduğunu kontrol etmek için. Zorunlu değil.

pip3 list >> flask kurulduğunu kotrol etmek için. Zorunlu değil.


Artık başlıyoruz VScode'ları açalım ve dosya hiyerarşimizi aşağıdaki resimde olduğu gibi oluşturalım.

Çalışacağımız klasörde app.py isimli bir python dosyası ve templates(isim önemli bu şekilde olmalı) klasörü bulunmakta. Template klasöründe de üç adet html dosyası var içeriklerini yazının en alında kod olarak paylaşacağım. Bizim için önemli olan app.py yi oluşturmak ve html kodlarının içindeki değişkenleri okuyarak python dosyamızda kullanmak

Flask için olmazsa olmaz komutlar diyebiliriz yukarıdaki resme. İlk satırda flask kütüphanesinden ihiyacımız olan class'ları import ettik. ikinci satırda app isimli Flask class'ından bir obje yarattık. En alt ksımda da kodu debug etmemiz için gerekli komutları yazdık. Eğer localinizde değilde farkli bir yerde çalışacaksanız

kodunuzda küçük değişiklik yapmanız gerekecek "app.run(host='0.0.0.0',port=80)" . EC2'da da 80 portunu açmanız gerekecek.

bütün kodumuzu yarattığımız obje ile if arasına yazacağız.


Basitten başlayıp örnekleri artıracağız. @ ile decorator oluşturup bir yol tanımladık "/" bu yol da aslında anasayfamız olarak düşünebilirsiniz. Daha sonra "/" dan sonra diğer sayfaların yollarını burada belirteceğiz.

Bunu yazdık ama sonucunu nerede göreceğiz? Öncelikle kodunuzu kaydedin ve çalıştırın. Terminal ekranı hareketlencek ve en altta bu kodun çıktısını neden göreceğinizin linki mevcut. http://127.0.0.1:5000/ veya localhost:5000 browser'a yapıştırınca çıktıyı aşağıdaki gibi görebilirsiniz.


Anasayfamız hazır🙂 şimdi diğer sayfaları yapalım.

Yeni bir path tanımlamış olduk. Farklı olarak dikkat ederseniz h1 etiketi içerisine yazdık. Haliyle çıktı da biraz kalın olacak 🙂 Tekrar etmiş olayım tüm decoratorleri obje ile objeyi çalıştırdığımız if arasına gelecek.


İkinci yol da tanımlandı gördüğünüz gibi çok da bir değişiklik yok sadece f-string kullandık. Bu sayfayı ilerde kullancağız.


import ettiğimiz classlardan redirect'i kullandık. admin sayfasına gelen istekleri hata sayfasına yönlendirdik aynı çıktıyı göreceğiz.


Buraya kadar olan kısım statik içerik idi şimdi dinamik içeriklere bakacağız.

Burada path değişken ne yazarsanız çıktı ona göre değişecek. Değişken olduğunu belirmek için path kısmı <> içerisinde ve aşağıda o değişkeni { } içerisinde kullanıyoruz. çıktımız da aşağıdaki gibi olacak.


Peki burada ne yaptık? Yukarıdakinden farklı olarak template kiraladık. Daha önceden hazırlanmış hosgeldiniz.html sayfanın içeriğini aldık. Dinamik içerik yaptık değişken bir yol var "isim" şeklinde yani yola hangi ismi girerseniz html sayfasındaki isim_html değişkenine o değer atanacak. Önce html sayfasını göstereyim daha sonra çıktıyı paylaşacağım.

Basit bir html sayfası bizi ilgilendiren kısım html içerisinde değişken var ve biz bunu python dosyasında alıyoruz. Çıktıyı da görünce daha da anlaşılır olacak.


Burada liste.html dosyasını kiraladık. Kod'da bir numara yok. Bu örnekte html sayfasında kodumuz. Önce html sayfasındaki kodu sonra çıktıyı göstereceğim.

Karışık gözükmsin diye sadece ilgili kısmı göstermek istedim. 1 den 6 ya kadar rakamları yazdıran bir döngü ama aynı x değişkenini "h" etiketi ile de kullandığımız için yazı boyutu küçülerek gidecek.


For döngüsünü de gördük son olarak if koşulunu gösterip bitireceğiz. EC2 kısmına geçeceğiz.

kosul.html sayfasında mesaj değişkenine buarada oluşturduğumuz ilk değişkenini atıyoruz.

html sayfasında da eğer mesaj girildi ise mesajı yazacak girilmesi ise "mesaj girilmedi" yazdıracak şekilde ayarlıyoruz.

Çıktımız bu şekilde eğer mesaj boş olmuş olsaydı.

çıktımızda bu şekilde olacaktı.


Vakit kaybetmeden EC2 dan yazdığımız kodları çalıştıralım. Dosyaları ec2 ya atmak için scp komutunu kullanabilirsiniz. Bu şekilde kolay yöntemle atabilirsiniz. ec2 da klasörleri yaratıp bu şekilde atabilirsiniz. Klasör olarak atılıyor mu ben bulamadım 🙂

Biz farklı bir yöntem izleyeceğiz dosyaları github hesabına atıp ordan wget komutu ile ec2 içerisinden çekeceğiz. Dosyaları github hesabımıza yükleyip diğer taraftan da ec2 ya bağlanalım. !! githuba yüklemeden önce başlarda bahsettiğim bir konu vardı portla ilgili app.run(host='0.0.0.0',port=80) bu düzeltmeyi yapalım mutlaka.

mkdir flask >> klasör yarattık.

cd flask >> klasör içine girdik.

mkdir templates >> hazırladığımız html sayfalarını koymak için templates klasörü açtık.

Şimdi github ımıza gidelim push ettiğimiz dosyaya girelim. app.py dosyasına tıklayalım. Açılan sayfada raw butonuna tıklayalım.

html sayfası açılacak linki kopyalayalım.

ec2 terminaline dönelim ve wget komutu yazdıktan sonra arkasına copyaladığımız linki yapıştıralım. Daha sonra template klaörüne girelim ve html sayfalarını da aynı yöntemle ec2 ya alalım.

Kurulumları başlangıçta yapmıştık zaten aşağıdaki kodu çalıştırıyoruz.

sudo python3 app.py

ve ec2 nuzun public ip sini veya dns ini kopyalayıp browserdan giriş yapabilsiniz.